python data_multi30k.py --pair_dir $1 --dest_dir $2 --src_lang $3 --trg_lang $4

# 新建train_l文件，合并两个文件到一个文件
touch $1/train_l
cat $2/train_src.cut.txt >> $1/train_l
cat $2/train_trg.cut.txt >> $1/train_l

# 生成词表，subword方式,统一用20000个subword
# subword-nmt learn-joint-bpe-and-vocab:
# 这是 subword-nmt 工具中用于学习联合 BPE 模型和词汇表的命令。
# -i $1/train_l:
# -i 指定输入文件，即训练语料。
# $1/train_l 是输入文件的路径。$1 是一个占位符，表示运行脚本时传入的目录或路径参数。
# -s 20000:
# -s 指定 BPE 操作（合并操作）的数量。
# 20000 表示 BPE 模型将学习 20,000 次合并操作。
# -o $1/bpe.20000:
# -o 指定输出文件，即学习到的 BPE 模型保存的位置。
# $1/bpe.20000 是输出文件的路径，模型将以 bpe.20000 为名保存。
# --write-vocabulary $1/vocab:
# --write-vocabulary 指定将词汇表写入文件。
# $1/vocab 是词汇表文件的输出路径。
subword-nmt learn-joint-bpe-and-vocab \
    -i $1/train_l \
    -s 20000 \
    -o $1/bpe.20000 \
    --write-vocabulary $1/vocab

# 应用分词
# for mode in train val test; do:
# 这是一个循环，依次处理 train（训练集）、val（验证集）和 test（测试集）三种模式的文件。
# subword-nmt apply-bpe：调用 subword-nmt 工具中的 apply-bpe 命令，用于将 BPE 模型应用到文本上。
# -c $1/bpe.20000：指定之前学习好的 BPE 模型文件路径（$1/bpe.20000）
# < $2/${mode}_src.cut.txt：输入文件是 $2/${mode}_src.cut.txt，即未切分的源语言文件。
# > $1/${mode}_src.bpe：输出文件是 $1/${mode}_src.bpe，即应用 BPE 后的源语言文件。
for mode in train val test; do
    subword-nmt apply-bpe -c $1/bpe.20000 < $2/${mode}_src.cut.txt > $1/${mode}_src.bpe
    subword-nmt apply-bpe -c $1/bpe.20000 < $2/${mode}_trg.cut.txt > $1/${mode}_trg.bpe
    echo "Finished applying bpe to ${mode} files."
done